﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;
using BLToolkit.DataAccess;

namespace Platform.Model
{
    [TableName("ViewKpi")]
    public class Kpi:Devsoft.DB.Models.Flat.Model<Kpi>
    {
        /// <summary>
        /// Ngày cân hàng
        /// </summary>
        public DateTime Date { get; set; }

        /// <summary>
        /// Họ và tên  của nhà cung cấp
        /// </summary>
        public string Name { get; set; }

      

        /// <summary>
        /// Mã số của nhà cung cấp
        /// </summary>
        public string SupNo { get; set; }

        /// <summary>
        /// Mã số đơn hàng
        /// </summary>
        public string OrderNo { get; set; }

        /// <summary>
        /// Mã số mặt hàng 
        /// </summary>
        public string ArtNo { get; set; }

        /// <summary>
        /// Mã số siêu thị
        /// </summary>
        public int MarketId { get; set; }

        /// <summary>
        /// Tên mặt hàng
        /// </summary>
        public string ArtName { get; set; }
        
        ///<summary>
        ///Mã kho của siêu thị
        /// </summary>
        public string StoreNo { get; set; }

        /// <summary>
        /// Tỉ số chuyển đổi đơn vị đo
        /// </summary>
        public float Unit { get; set; }    

        /// <summary>
        /// Khối lượng đặt hàng
        /// </summary>
        public float OrderQty { get; set; }

        /// <summary>
        /// Được tính bằng OrderQty*Unit
        /// </summary>
        [MapIgnore]
        public float OrderQtyKg
        {
            get { return OrderQty * Unit; }
        }

        /// <summary>
        /// Khối lượng giao hàng
        /// </summary>
        public float DeliQty { get; set; }

        /// <summary>
        /// Được tính bằng DeliQty*Unit
        /// </summary>
        [MapIgnore]
        public float DeliQtyKg
        {
            get { return DeliQty * Unit; }
        }

        /// <summary>
        /// Loại mặt hàng (có giá trị từ Cat1 -> Cat4)
        /// </summary>
        public int Cat { get; set; }

        /// <summary>
        /// Loại mặt hàng có giá trị Cat = 1
        /// </summary>
        [MapIgnore]
        public float Cat1
        {
            get
            {
                if (Cat == 1)
                    return DeliQtyKg;
                else
                {
                    return 0;
                }
            }
        }

        /// <summary>
        /// Loại mặt hàng có giá trị Cat = 2
        /// </summary>
        [MapIgnore]
        public float Cat2
        {
            get
            {
                if (Cat == 2)
                    return DeliQtyKg;
                else
                {
                    return 0;
                }
            }
        }

        /// <summary>
        /// Loại mặt hàng có giá trị Cat = 3
        /// </summary>
        [MapIgnore]
        public float Cat3
        {
            get
            {
                if (Cat == 3)
                    return DeliQtyKg;
                else
                {
                    return 0;
                }
            }
        }

        /// <summary>
        /// Loại mặt hàng có giá trị Cat = 4
        /// </summary>
        [MapIgnore]
        public float Cat4
        {
            get
            {
                if (Cat == 4)
                    return DeliQtyKg;
                else
                {
                    return 0;
                }
            }
        }

      

        /// <summary>
        /// Tổng hao hụt tự nhiên các lần cân chi tiết của đơn đặt hàng đó
        /// </summary>
        public float NLoss { get; set; }

        /// <summary>
        /// Tổng hao hụt sơ chế các lần cân chi tiết của đơn đặt hàng đó
        /// </summary>
        public float PLoss { get; set; }

        /// <summary>
        /// Đơn vị tính của siêu thị
        /// </summary>
        [MapIgnore]
        public float TeU
        {
            get
            {
                if (Cat == 1)
                    return DeliQty/1000;
                else
                {
                    
                        return DeliQty*Cat;
                }
            }
        }

    }
}
